package com.changhong.wlyspectrum.utils;

import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothGatt;
import android.bluetooth.BluetoothGattCharacteristic;
import android.content.Context;
import android.text.TextUtils;
import android.widget.Toast;
import android.util.Log;

public class MyConfig {
	//public static final String SERVER_ADDR = "http://123.57.46.78:18080";
	//public static final String SERVER_ADDR = "http://chphone.cn:18080";
	//public static final String APP_KEY = "d0611e59055d00d9c70593c";
	//public static final String APP_SECRET = "a8d0611e59055d00d9c70593c";
	public  static boolean modeStatus;
	public  static BluetoothDevice mBluetoothDevice;
	public static BluetoothGatt mBluetoothGatt;
	public static BluetoothGattCharacteristic characteristic_read;
	public static BluetoothGattCharacteristic characteristic_write;
    public static boolean istestResultActivity = false;


	public static final PredictRequest predictRequest = new PredictRequest();
	public static String gettime(){
		Calendar c = Calendar.getInstance();
		String show_time;
		if(c.get(Calendar.MINUTE) < 10){
			show_time = c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH )+1) + "-" +c.get(Calendar.DAY_OF_MONTH) 
			+ "  " +c.get(Calendar.HOUR_OF_DAY) + ":0" + c.get(Calendar.MINUTE);
		}
		else{
			show_time = c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH )+1) + "-" +c.get(Calendar.DAY_OF_MONTH) 
			+ "  " +c.get(Calendar.HOUR_OF_DAY) + ":" + c.get(Calendar.MINUTE);
		}
		//String show_time = c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH )+1) + "-" +c.get(Calendar.DAY_OF_MONTH) 
		//+ "  " +c.get(Calendar.HOUR_OF_DAY) + ":" + c.get(Calendar.MINUTE);
		return show_time;
		
	}
	
	 public static String stampToDate(String s){
	        String res;
	        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	        long lt = new Long(s);
	        Date date = new Date(lt);
	        res = simpleDateFormat.format(date);
	        return res;
	    }
	
	/**
	 * 验证手机号
	 */
	public static boolean isMobile(String number) {
		String num = "[1][3578]\\d{9}";
		if (TextUtils.isEmpty(number)) {
			return false;
		} else {
			return number.matches(num);
		}
	}

	public static void showTmsg(Context context,String msg) {
		Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
	}
	
	public static byte[] SetSencer(double para,byte num){
		long l = Double.doubleToLongBits(para);
		byte[] byte0 = new byte[17];
		byte0[0] = (byte) 0xAA;
		byte0[1] = 0x55;
		byte0[2] = 0x01;
		byte0[3] = 0x09;
		byte0[4] = num;
		for(int i =5;i<13;i++){
			byte0[i] = (byte) ((l>>(8*(i - 5))) & (0xFF));
			//System.out.println(String.format("%2x", byte0[i]).toUpperCase());
		}
		return byte0;
	}
	
	public static byte[] SetUp(){
		byte[] byte0 = new byte[17];
		byte0[0] = 0x01;
		byte0[1] = (byte) 0xAA;
		byte0[2] = 0x55;
		byte0[3] = 0x0F;
		byte0[4] = 0x01;
		byte0[5] = 0x02;
		
		return byte0;
	}
	
	public static byte[] SetDetect(){
        byte[] byte0 = new byte[17];
        byte0[0] = 0x01;
        byte0[1] = (byte) 0xAA;
        byte0[2] = 0x55;
        byte0[3] = 0x03;
        byte0[4] = 0x01;
        byte0[5] = 0x01;

        return byte0;
    }

    public static byte[] blueSetDetect(){
        byte[] byte0 = new byte[5];
        byte0[0] = (byte) 0xAA;
        byte0[1] = 0x55;
        byte0[2] = 0x03;
        byte0[3] = 0x01;
        byte0[4] = 0x01;

        return byte0;
    }
	
	public static byte[] ReadUp(){
		byte[] byte0 = new byte[17];
		byte0[0] = 0x01;
		byte0[1] = (byte) 0xAA;
		byte0[2] = 0x55;
		byte0[3] = 0x10;
		byte0[4] = 0x01;
		byte0[5] = 0x02;
		
		return byte0;
	}
	
	public static byte[] ReadId(){
		byte[] byte0 = new byte[17];
		byte0[0] = 0x01;
		byte0[1] = (byte) 0xAA;
		byte0[2] = 0x55;
		byte0[3] = 0x14;
		byte0[4] = 0x04;
		return byte0;
	}

	public static byte[] blueReadId(){
		byte[] byte0 = new byte[4];
		byte0[0] = (byte) 0xAA;
		byte0[1] = 0x55;
		byte0[2] = 0x14;
		byte0[3] = 0x04;
		return byte0;
	}
	
	public static byte[] ReadTemp(){
		byte[] byte0 = new byte[17];
		byte0[0] = 0x01;
		byte0[1] = (byte) 0xAA;
		byte0[2] = 0x55;
		byte0[3] = 0x0E;
		byte0[4] = 0x01;
		return byte0;
	}

	public static byte[] blueReadTemp(){
		byte[] byte0 = new byte[4];
		byte0[0] = (byte) 0xAA;
		byte0[1] = 0x55;
		byte0[2] = 0x0E;
		byte0[3] = 0x01;
		return byte0;
	}

	public static byte[] ReadPressure(){
		byte[] byte0 = new byte[17];
		byte0[0] = 0x01;
		byte0[1] = (byte) 0xAA;
		byte0[2] = 0x55;
		byte0[3] = (byte)0x97;
		byte0[4] = 0x01;
		return byte0;
	}

	public static byte[] blueReadPressure(){
		byte[] byte0 = new byte[4];
		byte0[0] = (byte) 0xAA;
		byte0[1] = 0x55;
		byte0[2] = (byte)0x97;
		byte0[3] = 0x01;
		return byte0;
	}
	
	public static byte[] SetFlash0(){
		byte[] byte0 = new byte[17];
		byte0[0] = 0x01;
		byte0[1] = (byte) 0xAA;
		byte0[2] = 0x55;
		byte0[3] = 0x15;
		byte0[4] = 0x01;
		byte0[5] = 0x00;
		return byte0;
	}

    public static byte[] blueSetFlash0(){
        byte[] byte0 = new byte[5];
        byte0[0] = (byte) 0xAA;
        byte0[1] = 0x55;
        byte0[2] = 0x15;
        byte0[3] = 0x01;
        byte0[4] = 0x00;
        return byte0;
    }
	
	public static byte[] SetFlash1(){
		byte[] byte0 = new byte[17];
		byte0[0] = 0x01;
		byte0[1] = (byte) 0xAA;
		byte0[2] = 0x55;
		byte0[3] = 0x15;
		byte0[4] = 0x01;
		byte0[5] = 0x01;
		return byte0;
	}

	public static byte[] blueSetFlash1(){
		byte[] byte0 = new byte[5];
		byte0[0] = (byte) 0xAA;
		byte0[1] = 0x55;
		byte0[2] = 0x15;
		byte0[3] = 0x01;
		byte0[4] = 0x01;
		return byte0;
	}
	
	public static byte[] ReadFlash0(){
		byte[] byte0 = new byte[17];
		byte0[0] = 0x01;
		byte0[1] = (byte) 0xAA;
		byte0[2] = 0x55;
		byte0[3] = 0x16;
		byte0[4] = 0x01;
		byte0[5] = 0x00;
		return byte0;
	}

    public static byte[] blueReadFlash0(){
        byte[] byte0 = new byte[5];
        byte0[0] = (byte) 0xAA;
        byte0[1] = 0x55;
        byte0[2] = 0x16;
        byte0[3] = 0x01;
        byte0[4] = 0x00;
        return byte0;
    }
	
	public static byte[] ReadFlash1(){
		byte[] byte0 = new byte[17];
		byte0[0] = 0x01;
		byte0[1] = (byte) 0xAA;
		byte0[2] = 0x55;
		byte0[3] = 0x16;
		byte0[4] = 0x01;
		byte0[5] = 0x01;
		return byte0;
	}

	public static byte[] blueReadFlash1(){
		byte[] byte0 = new byte[5];
		byte0[0] = (byte) 0xAA;
		byte0[1] = 0x55;
		byte0[2] = 0x16;
		byte0[3] = 0x01;
		byte0[4] = 0x01;
		return byte0;
	}
	
	public static byte[] LightOff(){
		byte[] byte0 = new byte[17];
		byte0[0] = 0x01;
		byte0[1] = (byte) 0xAA;
		byte0[2] = 0x55;
		byte0[3] = 0x11;
		byte0[4] = 0x01;
		byte0[5] = 0x00;
		return byte0;
	}

    public static byte[] blueLightOff(){
        byte[] byte0 = new byte[5];
        byte0[0] = (byte) 0xAA;
        byte0[1] = 0x55;
        byte0[2] = 0x11;
        byte0[3] = 0x01;
        byte0[4] = 0x00;
        return byte0;
    }
	
	public static byte[] LightOn(){
		byte[] byte0 = new byte[17];
		byte0[0] = 0x01;
		byte0[1] = (byte) 0xAA;
		byte0[2] = 0x55;
		byte0[3] = 0x11;
		byte0[4] = 0x01;
		byte0[5] = 0x01;
		return byte0;
	}

    public static byte[] blueLightOn(){
        byte[] byte0 = new byte[5];
        byte0[0] = (byte) 0xAA;
        byte0[1] = 0x55;
        byte0[2] = 0x11;
        byte0[3] = 0x01;
        byte0[4] = 0x01;
        return byte0;
    }
	
	public static byte[] ReadLight(){
		byte[] byte0 = new byte[17];
		byte0[0] = 0x01;
		byte0[1] = (byte) 0xAA;
		byte0[2] = 0x55;
		byte0[3] = 0x12;
		byte0[4] = 0x01;
		byte0[5] = 0x00;
		return byte0;
	}

    public static byte[] blueReadLight(){
        byte[] byte0 = new byte[5];
        byte0[0] = (byte) 0xAA;
        byte0[1] = 0x55;
        byte0[2] = 0x12;
        byte0[3] = 0x01;
        byte0[4] = 0x00;
        return byte0;
    }
	
	public static void bubbleSort(double[][] numbers) {
		double[] temp = new double[2]; // 记录临时中间值
		int size = numbers.length; // 数组大小
		for (int i = 0; i < size - 1; i++) {
			for (int j = i + 1; j < size; j++) {
				if (numbers[i][0] > numbers[j][0]) { // 交换两数的位置
					temp[0] = numbers[i][0];
					temp[1] = numbers[i][1];
					numbers[i][0] = numbers[j][0];
					numbers[i][1] = numbers[j][1];
					numbers[j][0] = temp[0];
					numbers[j][1] = temp[1];
				}
			}
		}
	}

	public static void Smoothing(double[][] Data){
		for(int i = 0 ; i < Data.length;i++){
			if(i <= 93){
				Data[i][1] = (Data[i][1]+Data[i+1][1]+Data[i+2][1]+Data[i+3][1]+Data[i+4][1]+Data[i+5][1]+Data[i+6][1])/7;
			}else if(i == 94){
				Data[i][1] = (Data[i][1]+Data[i+1][1]+Data[i+2][1]+Data[i+3][1]+Data[i+4][1]+Data[i+5][1])/6;
			}else if(i == 95){
				Data[i][1] = (Data[i][1]+Data[i+1][1]+Data[i+2][1]+Data[i+3][1]+Data[i+4][1])/5;
			}else if(i == 96){
				Data[i][1] = (Data[i][1]+Data[i+1][1]+Data[i+2][1]+Data[i+3][1])/4;
			}else if(i == 97){
				Data[i][1] = (Data[i][1]+Data[i+1][1]+Data[i+2][1])/3;
			}else if(i == 98){
				Data[i][1] = (Data[i][1]+Data[i+1][1])/2;
			}
		}
	}

	public static  double getTemputer(int adata){
		double r = 0;
		double A = 0;
		double B = 0;
		double C = 0;
		double tem = 0;
        double vol = ((double)(adata+32768)/65535)*3.34 ;
		if(vol!=0){
			r = 50/vol -10.075;
		}
		if(r>=96.1&&r<300.3){
			A = 3.53348*Math.pow(10,-3);
			B = -7.87463*Math.pow(10,-5);
			C = 8.74259*Math.pow(10,-7);
		}else if(r>=32.9&&r<96.1){
			A = 1.46516*Math.pow(10,-3);
			B = 1.85960*Math.pow(10,-4);
			C = 2.32844*Math.pow(10,-7);
		}else if(r>=5.3&&r<32.9){
			A = 1.09316*Math.pow(10,-3);
			B = 2.40113*Math.pow(10,-4);
			C = 6.28813*Math.pow(10,-8);
		}else if(r>=1.1&&r<5.3){
			A = 1.05955*Math.pow(10,-3);
			B = 2.44870*Math.pow(10,-4);
			C = 5.14556*Math.pow(10,-8);
		}else{
			return tem;   //0
		}
		double logr = Math.log(r*1000);
		double t = A+B*logr+C*(Math.pow(logr,3));
		if(t!=0){
			tem = 1/t -273.15;
		}
		NumberFormat nf = new DecimalFormat( "0.0");
		tem = Double.parseDouble(nf.format(tem));
		return tem;
	}

	public static void setModeStatus(boolean status){
		modeStatus = status;
	}

	public static boolean getModeStatus(){
		return modeStatus ;
	}

	public static void setDevice(BluetoothDevice mDevice){
		mBluetoothDevice = mDevice;
	}

	public static BluetoothDevice getBluetoothDevice(){
		return mBluetoothDevice ;
	}

    public static void setTestResultActivity(boolean status){
        istestResultActivity = status;
    }

}
